import java.util.HashSet;
import java.util.Set;

class A{
    @Override
    public boolean equals(Object obj) {
        return true;
    }
}
class B{
    @Override
    public int hashCode() {
        return 1;
    }
}
class C{
    @Override
    public int hashCode() {
        return 2;
    }

    @Override
    public boolean equals(Object obj) {
        return true;
    }
}
//目的：为了验证set集合中de 对象的相等条件两者必须同时满足：equals（），跟hashcode（）
public class HashDemo {
    public static void main(String[] args) {
        Set<Object> set = new HashSet<Object>();
        // Set<String> set =new HashSet();
        //该往几何中加入元素了
        //这报错因为上面规定了set里装的String类型的数据，所以报错
        set.add(new A());
        set.add(new B());
        set.add(new A());
        set.add(new B());
        set.add(new C());
        set.add(new C());
        //执行结果中把加进去的两个C视为一个C，因为equals跟hashcode都相等
        System.out.println(set.size());
        System.out.println(set);



    }
}
